node.js爬取数据

node可以做很多事情,比如爬虫、通信等等。 今天就先做一个爬虫,爬取一些百度图片。

首先我们需要引入一些模块

var http = require("http");
var https = require("https");
var fs = require("fs");
var cheerio = require("cheerio");  

这里需要注意cheerio是扩展模块需要装一下

npm install cheerio  --save  

然后要把这些图片的url地址获取下来

const wz="http://image.baidu.com/";
  
var strHtml="";
var resuts=[];//定义一个空数组,将数据内容存在里面 
http.get(wz,function(res){
    //接收数据
    res.on("data",function(data){
        strHtml+=data; 
    });
     //接收完成
    res.on("end",function(){
       var $=cheerio.load(strHtml);
       //找到这些图片的位置
       $(".img_single_box img").each(function(index,item){
            resuts.push($(item).attr('src'))
       });
       console.log(resuts);
     //循环调用图片函数  
    for(var i=0;i<resuts.length;i++){
        saveImage(resuts[i]);
    }


    });
}); 

然后根据图片URL地址保存成图片

function saveImage(resuts){
        https.get(resuts,function(res){
            
            res.setEncoding('binary');//二进制
    
            var imageData="";//将图片加载到内存中
            res.on("data",function(a){
                imageData+=a; 
            }).on("end",function(){
                //创建文件夹,如果有就不用创建
                if(!fs.existsSync('./images')){
                    fs.mkdirSync('./images');
                };
                //保存图片
                 fs.writeFile(".images/"+Math.random()+".png",imageData,"binary",function(err){
                    if(!err)
                    console.log("保存成功");
            });
            
            });
        });
    }    

哈希
744 声望8 粉丝